package com.sc.nft.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.ShareTheIncomeRecord;
import com.sc.nft.entity.UserCityServerCentre;
import com.sc.nft.entity.UserCityServerCentreDown;
import com.sc.nft.entity.UserInterestsRedPacket;
import com.sc.nft.entity.dto.GetUserCityServerCentreListDTO;
import com.sc.nft.entity.dto.GetUserCityServerCentrePageDTO;
import com.sc.nft.entity.dto.UserCityServerCentreDTO;
import com.sc.nft.entity.vo.CityServerCentreExportVO;
import com.sc.nft.entity.vo.GetUserCityServerCentreListVO;
import com.sc.nft.entity.vo.GetUserCityServerCentrePageVO;
import com.sc.nft.entity.vo.UserWorkRoomExcludeWhiteListRankVO;

import java.util.List;

public interface UserCityServerCentreService {


    /**
     * 根据userId查询对象
     *
     * @param userId
     * @return
     */
    UserCityServerCentre selectByUserId(Long userId);

    /**
     * 根据userId修改用户省市区
     *
     * @param userCityServerCentre
     * @return
     */
    Boolean byUserIdSaveModel(UserCityServerCentre userCityServerCentre);

    /**
     * 新增用户城市服务中心
     *
     * @return
     */
    Boolean saveUserCityServerCentre(UserCityServerCentreDTO userCityServerCentre);

    Boolean cancelUserCityServerCentre(Long id);


    /**
     * 获取所有用户城市服务中心
     *
     * @param getUserCityServerCentreListDTO
     * @return
     */
    List<GetUserCityServerCentreListVO> getUserCityServerCentreList(GetUserCityServerCentreListDTO getUserCityServerCentreListDTO);



    /**
     * 分页查询数据
     *
     * @param getUserCityServerCentreListDTO
     * @return
     */
    Page<GetUserCityServerCentrePageVO> selectPage(GetUserCityServerCentrePageDTO getUserCityServerCentreListDTO);


    void calComplianceData();

    /**
     * 导出城市服务中心
     *
     * @return
     */
    List<CityServerCentreExportVO> centerServerExport();
    /**
     * 获取城市服务中心排除白名单的列表
     *
     * @return
     */
    List<UserWorkRoomExcludeWhiteListRankVO> getUserCityServerCentreExcludeWhiteListRank();
    /**
     * 获取城市服务中心总数
     *
     * @return
     */
    Integer getCount();
    /**
     * 城市服务中心降级
     *
     * @param userCityServerCentre
     * @param assessId
     */
    void downgrade(UserCityServerCentre userCityServerCentre, Long assessId);
    /**
     * 城市服务中心预降级
     *
     * @param userCityServerCentre
     */
    void preDowngrade(UserCityServerCentre userCityServerCentre);
    /**
     * 城市服务中心升级
     * @param userWorkRoomExcludeWhiteListRankVO
     * @param assessId
     */
    void upgrade(UserWorkRoomExcludeWhiteListRankVO userWorkRoomExcludeWhiteListRankVO, Long assessId);
}
